package lamdba;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class LambdaDemo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);
        //新循环遍历(新循环就是迭代器)
        for (String  e:list){
            System.out.println(e);
        }
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        //list.forEach((s)->System.out.println(s));
        //如果方法只有一个参数，那么方法的()可以忽略不写
        list .forEach(s -> System.out.println(s));

         /*
            lambda表达式的特殊写法:方法引用
            格式:
            类名::方法名  对应静态方法
            对象::方法名  对应成员方法

            何时可以使用方法引用:
            当lambda表达式的参数列表与其调用的方法的参数列表一致时，就可以使用方法引用

            例如:
            list.forEach(s)->System.out.println(s))
            lambda的参数列表  一致   调用的方法的参数列表
                   此时可以省略掉参数部分，使用::调用引用

            list.forEach(System.out::println);
          */
        list.forEach(System.out::println);
    }
}
